Some computer-based applications that process images provide no facility for receiving non-pixel-related data, hereinafter referred to as “metadata,” that may be used to control how an image is to be processed. As shown by way of example in FIG. 1, an image 100 is sent from a computer 102 via a computer network 104, such as the Internet, to a server 106. In the example shown in FIG. 1, image 100 is encoded using a lossy compression scheme, such as JPEG. Image 100 is decoded by an image decoder 108 into raw pixel data encoded in RGB (3 bytes of 8 bits each) color format, and the raw pixel data is provided to some element that then processes the pixel values, typically for display, such as to a rendering engine 110 that is, for example, capable of implementing the OpenGL standard, which renders the image.
It may be advantageous to include metadata along with the raw pixel data that is provided to engine 110. However, if the image data is passed to a lower level OpenGL rendering engine, that layer has no access to any metadata which is related to the RGB pixel values. Thus, as the OpenGL specification does not make provisions for receiving metadata, any metadata would have to be embedded within the pixel data of image 100. Unfortunately, as images are typically compressed using lossy compression before they are seen by the OpenGL layer, any embedded metadata may be corrupted before being made available to the OpenGL layer for inspection.